'use strict'

const { renameSync } = require('fs')
const http = require('http')

let html = `
    <!DOCTYPE html>
    <html>
        <head>
            <title>First Server</title>
        </head>
        <body>
            <div>Node.js in service.</div>
        </body>
    </html>
`

let routerTable = {
    '/': async(request, response)=>{
        response.setHeader('content-type', 'text/html;charset=utf-8')
        response.end(html)
    },
    '/x/y': async(request, response)=>{
        response.end('-- OK --')
    },
    '/x/y/z': async(request, response)=>{
        let bufferList =[]
        let totalLength = 0

        request.on('data', chunk => {
            totalLength += chunk.totalLength
            bufferList.push(chunk)
        })

        let bodyData = null

        request.on('end', () =>{
            if(bufferList.length > 0){
                bodyData = Buffer.concat(bufferList, totalLength);
            }
        bufferList = []

        if(bodyData){
            response.setHeader('content-type', 'text/plain; charset=utf-8')
            response.end(bodyData)
        }else{
        // response.setHeader('content-type', 'text/html; charset=utf-8')
            response.end()
        }
        })
    }
}

let serv = http.createServer((request, response) => {

    // if(request.url !== '/x/y/z'){
    //     response.statusCode = 404
    //     response.end('page not found')
    //     return
    // }

    if(routerTable[request.url] === undefined){
        response.statusCode =404
        response.end('page not found')
        return
    }

    routerTable[request.url](request, response)

    

    //response.setHeader('content-type', 'text/html; charset=utf-8')

    
    
})

serv.listen(3456)